import re

# 用户名可以是字母或者数字，不能是数字开头，用户名长度必须6位以上

username = 'a23123sfsafdf324AFFS'

# res = re.match('^[a-zA-Z][0-9a-zA-Z]{5,}$', username)
res = re.match('^[a-zA-Z]\w{5,}$', username)
print(res)

'''
\A:表示从字符串的开始处匹配
\Z:表示从字符串的结束处匹配，如果存在换行，只匹配到换行前的结束字符串。
\b:匹配一个单词边界，也就是指单词和空格间的位置。例如，prib’可以匹配”python”中的y”，但不能匹配CREDPXXL”中的”pyB:匹配非单词边界。’py
\B’可以匹配”gpenRxsl”中的y”，但不能匹配”python”中的py’。
\d: 匹配任意数字，等价于 [0-D:匹配任意非数字字符，等价~dl
\s:匹配任意空白字符，等价于 [\t\n\r\f]。
\S:匹配任意非空白字符，等价于 [~\s]。
\w: 匹配任意字母数字及下划线，等价于[a-zA-20-9_]。
\W:匹配任意非字母数字及下划线，等价于[~\w]
\\: 匹配原义的反斜杠\。
'''

msg = 'a*py ab.txt bb.py kk.png uu.py'

'''
    总结：
    . 任意字符除(\n)
    ^ 开头
    $ 结尾
    [] 范围[a-z%^&]
    正则预定义
    \s 空白 空格
    \b 边界
    \d 数字
    
    \w word [0-9a-zA-Z_]
    
    大写
    反面 
    \S 非空格 \D非数字
    
    '\w[0-9]' \w [0-9] 只能匹配一个字母
    
    量词
    * >=0
    + >=1
    ? 0,1
    
'''

res = re.findall(r'\w+\.py\b', msg)
print(res)

# 手机号码的正则
phone = '13825689654'
res = re.match(r'^1[356789]\d{9}$', phone)
print(res)
